<?xml version='1.0' encoding="utf-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html lang="en" xml:lang="en" xmlns="http://www.w3.org/1999/xhtml">
  <head>
    <link href="cpip.css" rel="stylesheet" type="text/css" />
    <title>File: /usr/include/runetype.h</title>
  </head>
  <body>
    <h1>File: /usr/include/runetype.h</h1>
    <p>Green shading in the line number column
means the source is part of the translation unit, red means it is conditionally excluded.
Highlighted line numbers link to the translation unit page. Highlighted macros link to
the macro page.</p>
    <pre><a name="1" /><span class="True">       1:</span> <span class="k">/*-</span>
<a name="2" /><span class="True">       2:</span> <span class="k"> * Copyright (c) 1993</span>
<a name="3" /><span class="True">       3:</span> <span class="k"> *    The Regents of the University of California.  All rights reserved.</span>
<a name="4" /><span class="True">       4:</span> <span class="k"> *</span>
<a name="5" /><span class="True">       5:</span> <span class="k"> * This code is derived from software contributed to Berkeley by</span>
<a name="6" /><span class="True">       6:</span> <span class="k"> * Paul Borman at Krystal Technologies.</span>
<a name="7" /><span class="True">       7:</span> <span class="k"> *</span>
<a name="8" /><span class="True">       8:</span> <span class="k"> * Redistribution and use in source and binary forms, with or without</span>
<a name="9" /><span class="True">       9:</span> <span class="k"> * modification, are permitted provided that the following conditions</span>
<a name="10" /><span class="True">      10:</span> <span class="k"> * are met:</span>
<a name="11" /><span class="True">      11:</span> <span class="k"> * 1. Redistributions of source code must retain the above copyright</span>
<a name="12" /><span class="True">      12:</span> <span class="k"> *    notice, this list of conditions and the following disclaimer.</span>
<a name="13" /><span class="True">      13:</span> <span class="k"> * 2. Redistributions in binary form must reproduce the above copyright</span>
<a name="14" /><span class="True">      14:</span> <span class="k"> *    notice, this list of conditions and the following disclaimer in the</span>
<a name="15" /><span class="True">      15:</span> <span class="k"> *    documentation and/or other materials provided with the distribution.</span>
<a name="16" /><span class="True">      16:</span> <span class="k"> * 3. All advertising materials mentioning features or use of this software</span>
<a name="17" /><span class="True">      17:</span> <span class="k"> *    must display the following acknowledgement:</span>
<a name="18" /><span class="True">      18:</span> <span class="k"> *    This product includes software developed by the University of</span>
<a name="19" /><span class="True">      19:</span> <span class="k"> *    California, Berkeley and its contributors.</span>
<a name="20" /><span class="True">      20:</span> <span class="k"> * 4. Neither the name of the University nor the names of its contributors</span>
<a name="21" /><span class="True">      21:</span> <span class="k"> *    may be used to endorse or promote products derived from this software</span>
<a name="22" /><span class="True">      22:</span> <span class="k"> *    without specific prior written permission.</span>
<a name="23" /><span class="True">      23:</span> <span class="k"> *</span>
<a name="24" /><span class="True">      24:</span> <span class="k"> * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS&apos;&apos; AND</span>
<a name="25" /><span class="True">      25:</span> <span class="k"> * ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE</span>
<a name="26" /><span class="True">      26:</span> <span class="k"> * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE</span>
<a name="27" /><span class="True">      27:</span> <span class="k"> * ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE</span>
<a name="28" /><span class="True">      28:</span> <span class="k"> * FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL</span>
<a name="29" /><span class="True">      29:</span> <span class="k"> * DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS</span>
<a name="30" /><span class="True">      30:</span> <span class="k"> * OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)</span>
<a name="31" /><span class="True">      31:</span> <span class="k"> * HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT</span>
<a name="32" /><span class="True">      32:</span> <span class="k"> * LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY</span>
<a name="33" /><span class="True">      33:</span> <span class="k"> * OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF</span>
<a name="34" /><span class="True">      34:</span> <span class="k"> * SUCH DAMAGE.</span>
<a name="35" /><span class="True">      35:</span> <span class="k"> *</span>
<a name="36" /><span class="True">      36:</span> <span class="k"> *    @(#)runetype.h    8.1 (Berkeley) 6/2/93</span>
<a name="37" /><span class="True">      37:</span> <span class="k"> */</span>
<a name="38" /><span class="True">      38:</span> 
<a name="39" /><span class="True">      39:</span> <span class="f">#</span><span class="n">ifndef</span>    <a href="macros_noref.html#_X1JVTkVUWVBFX0hfXzA_"><span class="b">_RUNETYPE_H_</span></a>
<a name="40" /><span class="True">      40:</span> <span class="f">#</span><span class="n">define</span>    <a href="macros_noref.html#_X1JVTkVUWVBFX0hfXzA_"><span class="b">_RUNETYPE_H_</span></a>
<a name="41" /><span class="True">      41:</span> 
<a name="42" /><span class="True">      42:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">_types</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="43" /><span class="True">      43:</span> 
<a name="44" /><span class="True">      44:</span> <span class="f">#</span><span class="n">if</span> <span class="f">!</span><span class="b">defined</span><span class="f">(</span><span class="b">_POSIX_C_SOURCE</span><span class="f">)</span> <span class="f">||</span> <span class="b">defined</span><span class="f">(</span><a href="macros_ref.html#_X0RBUldJTl9DX1NPVVJDRV8w"><span class="b">_DARWIN_C_SOURCE</span></a><span class="f">)</span>
<a name="45" /><span class="True">      45:</span> 
<a name="46" /><span class="True">      46:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">sys</span><span class="f">/</span><span class="b">_types</span><span class="f">/</span><span class="b">_size_t</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="47" /><span class="True">      47:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">sys</span><span class="f">/</span><span class="b">_types</span><span class="f">/</span><span class="b">_ct_rune_t</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="48" /><span class="True">      48:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">sys</span><span class="f">/</span><span class="b">_types</span><span class="f">/</span><span class="b">_rune_t</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="49" /><span class="True">      49:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">sys</span><span class="f">/</span><span class="b">_types</span><span class="f">/</span><span class="b">_wchar_t</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="50" /><span class="True">      50:</span> <span class="f">#</span><span class="n">include</span> <span class="f">&lt;</span><span class="b">sys</span><span class="f">/</span><span class="b">_types</span><span class="f">/</span><span class="b">_wint_t</span><span class="f">.</span><span class="b">h</span><span class="f">&gt;</span>
<a name="51" /><span class="True">      51:</span> 
<a name="52" /><span class="True">      52:</span> <span class="f">#</span><span class="n">endif</span> <span class="k">/* (!_POSIX_C_SOURCE || _DARWIN_C_SOURCE) */</span>
<a name="53" /><span class="True">      53:</span> 
<a name="54" /><span class="True">      54:</span> <span class="f">#</span><span class="n">define</span>    <a href="macros_ref.html#_X0NBQ0hFRF9SVU5FU18w"><span class="b">_CACHED_RUNES</span></a>    <span class="f">(</span><span class="c">1</span> <span class="f">&lt;&lt;</span><span class="c">8</span> <span class="f">)</span>    <span class="k">/* Must be a power of 2 */</span>
<a name="55" /><span class="True">      55:</span> <span class="f">#</span><span class="n">define</span>    <a href="macros_noref.html#_X0NSTUFTS18w"><span class="b">_CRMASK</span></a>        <span class="f">(</span><span class="f">~</span><span class="f">(</span><a href="macros_ref.html#_X0NBQ0hFRF9SVU5FU18w"><span class="b">_CACHED_RUNES</span></a> <span class="f">-</span> <span class="c">1</span><span class="f">)</span><span class="f">)</span>
<a name="56" /><span class="True">      56:</span> 
<a name="57" /><span class="True">      57:</span> <span class="k">/*</span>
<a name="58" /><span class="True">      58:</span> <span class="k"> * The lower 8 bits of runetype[] contain the digit value of the rune.</span>
<a name="59" /><span class="True">      59:</span> <span class="k"> */</span>
<a name="60" /><span class="True">      60:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="61" /><span class="True">      61:</span>     <span class="b">__darwin_rune_t</span>    <span class="b">__min</span><span class="f">;</span>        <span class="k">/* First rune of the range */</span>
<a name="62" /><span class="True">      62:</span>     <span class="b">__darwin_rune_t</span>    <span class="b">__max</span><span class="f">;</span>        <span class="k">/* Last rune (inclusive) of the range */</span>
<a name="63" /><span class="True">      63:</span>     <span class="b">__darwin_rune_t</span>    <span class="b">__map</span><span class="f">;</span>        <span class="k">/* What first maps to in maps */</span>
<a name="64" /><span class="True">      64:</span>     <span class="b">__uint32_t</span>    <span class="f">*</span><span class="b">__types</span><span class="f">;</span>    <span class="k">/* Array of types in range */</span>
<a name="65" /><span class="True">      65:</span> <span class="f">}</span> <span class="b">_RuneEntry</span><span class="f">;</span>
<a name="66" /><span class="True">      66:</span> 
<a name="67" /><span class="True">      67:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="68" /><span class="True">      68:</span>     <span class="m">int</span>        <span class="b">__nranges</span><span class="f">;</span>    <span class="k">/* Number of ranges stored */</span>
<a name="69" /><span class="True">      69:</span>     <span class="b">_RuneEntry</span>    <span class="f">*</span><span class="b">__ranges</span><span class="f">;</span>    <span class="k">/* Pointer to the ranges */</span>
<a name="70" /><span class="True">      70:</span> <span class="f">}</span> <span class="b">_RuneRange</span><span class="f">;</span>
<a name="71" /><span class="True">      71:</span> 
<a name="72" /><span class="True">      72:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="73" /><span class="True">      73:</span>     <span class="m">char</span>        <span class="b">__name</span><span class="f">[</span><span class="c">14</span><span class="f">]</span><span class="f">;</span>    <span class="k">/* CHARCLASS_NAME_MAX = 14 */</span>
<a name="74" /><span class="True">      74:</span>     <span class="b">__uint32_t</span>    <span class="b">__mask</span><span class="f">;</span>        <span class="k">/* charclass mask */</span>
<a name="75" /><span class="True">      75:</span> <span class="f">}</span> <span class="b">_RuneCharClass</span><span class="f">;</span>
<a name="76" /><span class="True">      76:</span> 
<a name="77" /><span class="True">      77:</span> <span class="m">typedef</span> <span class="m">struct</span> <span class="f">{</span>
<a name="78" /><span class="True">      78:</span>     <span class="m">char</span>        <span class="b">__magic</span><span class="f">[</span><span class="c">8</span><span class="f">]</span><span class="f">;</span>    <span class="k">/* Magic saying what version we are */</span>
<a name="79" /><span class="True">      79:</span>     <span class="m">char</span>        <span class="b">__encoding</span><span class="f">[</span><span class="c">32</span><span class="f">]</span><span class="f">;</span>    <span class="k">/* ASCII name of this encoding */</span>
<a name="80" /><span class="True">      80:</span> 
<a name="81" /><span class="True">      81:</span>     <span class="b">__darwin_rune_t</span>    <span class="f">(</span><span class="f">*</span><span class="b">__sgetrune</span><span class="f">)</span><span class="f">(</span><span class="m">const</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="b">__darwin_size_t</span><span class="f">,</span> <span class="m">char</span> <span class="m">const</span> <span class="f">*</span><span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="82" /><span class="True">      82:</span>     <span class="m">int</span>        <span class="f">(</span><span class="f">*</span><span class="b">__sputrune</span><span class="f">)</span><span class="f">(</span><span class="b">__darwin_rune_t</span><span class="f">,</span> <span class="m">char</span> <span class="f">*</span><span class="f">,</span> <span class="b">__darwin_size_t</span><span class="f">,</span> <span class="m">char</span> <span class="f">*</span><span class="f">*</span><span class="f">)</span><span class="f">;</span>
<a name="83" /><span class="True">      83:</span>     <span class="b">__darwin_rune_t</span>    <span class="b">__invalid_rune</span><span class="f">;</span>
<a name="84" /><span class="True">      84:</span> 
<a name="85" /><span class="True">      85:</span>     <span class="b">__uint32_t</span>    <span class="b">__runetype</span><span class="f">[</span><a href="macros_ref.html#_X0NBQ0hFRF9SVU5FU18w"><span class="b">_CACHED_RUNES</span></a><span class="f">]</span><span class="f">;</span>
<a name="86" /><span class="True">      86:</span>     <span class="b">__darwin_rune_t</span>    <span class="b">__maplower</span><span class="f">[</span><a href="macros_ref.html#_X0NBQ0hFRF9SVU5FU18w"><span class="b">_CACHED_RUNES</span></a><span class="f">]</span><span class="f">;</span>
<a name="87" /><span class="True">      87:</span>     <span class="b">__darwin_rune_t</span>    <span class="b">__mapupper</span><span class="f">[</span><a href="macros_ref.html#_X0NBQ0hFRF9SVU5FU18w"><span class="b">_CACHED_RUNES</span></a><span class="f">]</span><span class="f">;</span>
<a name="88" /><span class="True">      88:</span> 
<a name="89" /><span class="True">      89:</span>     <span class="k">/*</span>
<a name="90" /><span class="True">      90:</span> <span class="k">     * The following are to deal with Runes larger than _CACHED_RUNES - 1.</span>
<a name="91" /><span class="True">      91:</span> <span class="k">     * Their data is actually contiguous with this structure so as to make</span>
<a name="92" /><span class="True">      92:</span> <span class="k">     * it easier to read/write from/to disk.</span>
<a name="93" /><span class="True">      93:</span> <span class="k">     */</span>
<a name="94" /><span class="True">      94:</span>     <span class="b">_RuneRange</span>    <span class="b">__runetype_ext</span><span class="f">;</span>
<a name="95" /><span class="True">      95:</span>     <span class="b">_RuneRange</span>    <span class="b">__maplower_ext</span><span class="f">;</span>
<a name="96" /><span class="True">      96:</span>     <span class="b">_RuneRange</span>    <span class="b">__mapupper_ext</span><span class="f">;</span>
<a name="97" /><span class="True">      97:</span> 
<a name="98" /><span class="True">      98:</span>     <span class="m">void</span>        <span class="f">*</span><span class="b">__variable</span><span class="f">;</span>    <span class="k">/* Data which depends on the encoding */</span>
<a name="99" /><span class="True">      99:</span>     <span class="m">int</span>        <span class="b">__variable_len</span><span class="f">;</span>    <span class="k">/* how long that data is */</span>
<a name="100" /><span class="True">     100:</span> 
<a name="101" /><span class="True">     101:</span>     <span class="k">/*</span>
<a name="102" /><span class="True">     102:</span> <span class="k">     * extra fields to deal with arbitrary character classes</span>
<a name="103" /><span class="True">     103:</span> <span class="k">     */</span>
<a name="104" /><span class="True">     104:</span>     <span class="m">int</span>        <span class="b">__ncharclasses</span><span class="f">;</span>
<a name="105" /><span class="True">     105:</span>     <span class="b">_RuneCharClass</span>    <span class="f">*</span><span class="b">__charclasses</span><span class="f">;</span>
<a name="106" /><span class="True">     106:</span> <span class="f">}</span> <span class="b">_RuneLocale</span><span class="f">;</span>
<a name="107" /><span class="True">     107:</span> 
<a name="108" /><span class="True">     108:</span> <span class="f">#</span><span class="n">define</span>    <a href="macros_noref.html#_X1JVTkVfTUFHSUNfQV8w"><span class="b">_RUNE_MAGIC_A</span></a>    <span class="e">&quot;RuneMagA&quot;</span>    <span class="k">/* Indicates version A of RuneLocale */</span>
<a name="109" /><span class="True">     109:</span> 
<a name="110" /><span class="True">     110:</span> <a href="macros_ref.html#_X19CRUdJTl9ERUNMU18w"><span class="b">__BEGIN_DECLS</span></a>
<a name="111" /><span class="True">     111:</span> <span class="m">extern</span> <span class="b">_RuneLocale</span> <span class="b">_DefaultRuneLocale</span><span class="f">;</span>
<a name="112" /><span class="True">     112:</span> <span class="m">extern</span> <span class="b">_RuneLocale</span> <span class="f">*</span><span class="b">_CurrentRuneLocale</span><span class="f">;</span>
<a name="113" /><span class="True">     113:</span> <a href="macros_ref.html#_X19FTkRfREVDTFNfMA__"><span class="b">__END_DECLS</span></a>
<a name="114" /><span class="True">     114:</span> 
<a name="115" /><span class="True">     115:</span> <span class="f">#</span><span class="n">endif</span>    <span class="k">/* !_RUNETYPE_H_ */</span>
<a name="116" /><span class="True">     116:</span> </pre>
  </body>
</html>
